package com.icekrvams.air.firebase.fcm

import androidx.annotation.WorkerThread
import com.google.firebase.messaging.RemoteMessage

interface FcmListener {

    /**
     * 收到Fcm，且携带了data信息，[onFcmReceived] 会在此方法之前被调用。
     *
     * @param data       [RemoteMessage.data]
     * @param rawMessage 原生[RemoteMessage]，即未经任何处理的 Fcm。
     */
    fun onDataReceived(data: Map<String, String>, rawMessage: RemoteMessage) {}

    /**
     * 收到 Fcm，且携带了 notification 信息，[onFcmReceived] 会在此方法之前被调用。
     *
     * @param notification [RemoteMessage.notification]
     * @param rawMessage   原生[RemoteMessage]，即未经任何处理的 Fcm。
     */
    fun onNotificationReceived(
        notification: RemoteMessage.Notification,
        rawMessage: RemoteMessage
    ) {
    }

    /**
     * 收到 Fcm。
     *
     * @param rawMessage 原生[RemoteMessage]，即未经任何处理的 Fcm。
     */
    fun onFcmReceived(rawMessage: RemoteMessage) {}

    /**
     * CloudMessaging token 更新回调。
     *
     * @param token 更新后的 token。
     */
    @WorkerThread
    fun onNewToken(token: String) {
    }
}